<template>
	<view class="defaultStyles">
	</view>
</template>
<script lang="uts">
	import { NHT_Player } from "NHT_Player"
	import { Int } from 'Swift';

	//原生提供以下属性或方法的实现
	export default {
		data() {
			return {
			};
		},
		/**
		 * 组件名称，也就是开发者使用的标签
		 */
		name: "jk-player",
		/**
		 * 组件涉及的事件声明，只有声明过的事件，才能被正常发送
		 */
		emits: ['buttonclick'],
		/**
		 * 属性声明，组件的使用者会传递这些属性值到组件
		 */
		props: {
			showBottomContainer: {
				type: Boolean,
				default: true
			},
		},
		/**
		 * 组件内部变量声明
		 */

		/**
		 * 属性变化监听器实现
		 */
		watch: {

		},
		/**
		 * 规则：如果没有配置expose，则methods中的方法均对外暴露，如果配置了expose，则以expose的配置为准向外暴露
		 * ['publicMethod'] 含义为：只有 `publicMethod` 在实例上可用
		 */
		expose: ['setDataSource', 'restart', 'stop', 'isPlaying', 'capture', 'showBottomContainer', 'onPause', 'onResume', 'onDestroy'],
		methods: {
			/* 是否正在播放 */
			isPlaying() : boolean {
				return this.$el.isPlaying();
			},
			/* 设置播放地址 */
			setDataSource(url : string) {

				//let url = "rtsp://admin:1qaz2wsx@192.168.20.24:554/cam/realmonitor?channel=1&subtype=0";
				this.$el.setPlayResource(url);

			},
			/* 重新开始 */
			restart() {

				this.$el.startVideo();

			},
			/* 停止 */
			stop() {

				this.$el.stopVideo();

			},
			/* 截屏 */
			capture(cb : (path : string) => void) {

				this.$el.saveVideoSnapshotAt()

			},

			showBottomContainer(show : boolean) {

			},
			/* 暂停 */
			onPause() {

				this.$el.pauseVideo();

			},
			/* 重新开始 */
			onResume() {

				this.$el.stopVideo();

			},
			/* 销毁 */
			onDestroy() {

				this.$el.stopVideo();

			}
		},


		/**
		 * 组件被创建，组件第一个生命周期，
		 * 在内存中被占用的时候被调用，开发者可以在这里执行一些需要提前执行的初始化逻辑
		 * [可选实现]
		 */
		created() {

		},
		/**
		 * 对应平台的view载体即将被创建，对应前端beforeMount
		 * [可选实现]
		 */
		NVBeforeLoad() {

		},
		/**
		 * 创建原生View，必须定义返回值类型
		 * 开发者需要重点实现这个函数，声明原生组件被创建出来的过程，以及最终生成的原生组件类型
		 * [必须实现]
		 */
		NVLoad() : NHT_Player {
			let button = new NHT_Player()
			button.onPlayerStateBlock = (state : Int) => {
				console.log('----', state);
			};
			return button
		},

		/**
		 * 原生View已创建
		 * [可选实现]
		 */
		NVLoaded() {

		},
		/**
		 * 原生View布局完成
		 * [可选实现]
		 */
		NVLayouted() {

		},
		/**
		 * 原生View将释放
		 * [可选实现]
		 */
		NVBeforeUnload() { },
		/**
		 * 原生View已释放，这里可以做释放View之后的操作
		 * [可选实现]
		 */
		NVUnloaded() {

		},
		/**
		 * 组件销毁
		 * [可选实现]
		 */
		unmounted() { }

		/**
		 * 更多组件开发的信息详见：https://uniapp.dcloud.net.cn/plugin/uts-component.html
		 */
	}
</script>

<style>

</style>